package com.yh.exception;

import com.yh.resp.ResultData;
import com.yh.resp.ReturnCodeEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@Slf4j
@RestControllerAdvice  // 统一处理异常
public class GlobalExceptionHandler {
    /**
     * 全局异常处理器，处理所有RuntimeException类型的异常。
     *
     * @param e 捕获的异常对象
     * @return 返回包含错误信息的ResultData对象
     * @responseStatus 500 表示内部服务器错误
     */
    @ExceptionHandler(value = RuntimeException.class)
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) // 500 Internal Server Error
    public ResultData<String> exception(Exception e){
        // 输出日志，表示进入了全局异常处理器
        System.out.println("----come in GlobalExceptionHandler");

        // 记录全局异常信息到日志中
        // 第一个参数是日志内容，后面是参数和异常对象
        log.error("全局异常信息exception:{}",e.getMessage(),e);

        // 返回包含错误信息的ResultData对象
        // 调用ResultData的fail方法，传入错误码和错误信息
        return ResultData.fail(ReturnCodeEnum.RC500.getCode(),e.getMessage());
    }


}
